OKAY, HERE'S THE PARTIAL LISTING TO GET YOU ON YOUR WAY, ALEXEI.
YOU'LL NEED APPMAKER 1.6 TO IMPLEMENT THE SetDText COMMANDS, BUT YOU
MAY RECODE BY USING SetDItem AND LOOKING UP IN INS.MAC. ON HOW IT'S USED.
(I ALREADY KNOW YOU KNOW HOW.)
FOR THOSE OF YOU NEW TO MAC DEV LAND, YOU'LL NEED SOME MORE INPUT, LIKE WHAT THE DIALOG BOX FUNCTION WOULD LOOK LIKE, OR HOW IT'S PUT TOGETHER IN RESEDIT.
----
#define NILSHORT 0
#define FILLPICT 3 //THIS IS THE ID OF THE COLOR PICT FILE SHOWING THE
//STANDARD LAVENDAR SYSTEM 7 TUBE
#define FILLLABEL 4 //THIS IS THE ID OF THE STATIC TEXT FOR THE MSG
#define FILLDIALOG SuperDialog
#define QuitButton 1
#define FillButton 2
#define Picture3 3
#define FillingThisTubeLabel 4
//GLOBALS...
DialogPtr SuperDialog;
short righty_1=0,lefty_1=0,x_1=0;
Rect itemRect;
//THE FUNCTIONS BELOW ASSUME YOU HAVE A FUNCTION TO GET THE DIALOG BOX ON THE SCREEN.
pascal void UpdateFillTube (register short increment)
{ //THIS IS THE FUNCTION THAT DOES IT ALL
DialogPtr theDialog=FILLDIALOG;
PenState savePen;
#pragma unused (theDialog)
GetPenState (&savePen);
PenNormal(); //SETS BLACK PEN
//TO CHOOSE COLOR PEN, FOLLOW WITH ForeColor(x), WHERE x IS:
//BLACK=33
//WHITE=30
//RED=205
//GREEN=341
//BLUE=409
//CYAN=273
//MAGENTA=137
//YELLOW=69
if (lefty_1==NILSHORT) {
itemRect = GetDRect (FILLPICT);
righty_1=itemRect.right;
lefty_1=itemRect.left;
x_1=lefty_1;
}
itemRect.right=x_1;
x_1+=increment;
PaintRect (&itemRect);
SetPenState (&savePen);
if (x_1>righty_1) lefty_1=NILSHORT;
}
pascal void FinishFillTube (void) //FOR WHEN YOUR DONE FASTER THAN THE TUBE IS
{
DialogPtr theDialog=FILLDIALOG;
PenState savePen;
#pragma unused (theDialog)
GetPenState (&savePen);
PenNormal();
//FOR COLOR, DO, AS TOLD ABOVE, HERE
itemRect = GetDRect (FILLPICT);
PaintRect (&itemRect);
SetPenState (&savePen);
lefty_1=NILSHORT;
SysBeep(30);
}
static void WipeFillTube (void) //ERASES FILL TUBE WHEN DONE
{
HideWindow(FILLDIALOG); //SOMEONE ELSE MAY THINK UP A FASTER WAY...
ShowWindow(FILLDIALOG);
lefty_1=NILSHORT;
}
static void TellFillTube(char *p) //PUTS MSG IN TEXT ITEM
{
Str255 b;
register short x;
for (x=0;x<=255;b[x]=p[x],++x);
CtoPstr(b);
SetDText(FILLLABEL,b);
}
static void DoFillButton (void) //UPON FILL BUTTON PUSH, EXECUTES THE ABOVE